[LOJ6289]-花朵

传送门

看它 $id$ 跟我 $loj$ $id$ 相同就做了做 => 调了 $3h+$ 惨败


$upd$:重构 $AC$ 啦= =

根据 $dp$ 方程交换二三两维可以得到:

就 nm 像矩阵乘法!但是上树了。说个笑话,暴力卷是 $n^2logn$ 的(

部分分的链和菊花启示我们要优雅的卷,比如剖成链,每条链先单独卷

长链还是重链呢?当然是重链啦,一次卷积的时间复杂度取决于卷的数组大小,长链那深度差可大了。

细一点说,把轻链信息用分治卷 并到轻链顶点的父亲上,一次 $O(size(x)log^2size(x))$,由于 轻儿子点数和$=\sum size(x) = O(nlogn)$,所以总共就是 $O(nlog^3n)$;再用分治卷 卷重链,总共 $O(nlog^2n)$(这里要注意,之前卷轻链的时候只要顾及轻链顶点和父亲的 $0$/$1$ 是否合法,卷重链的时候还要顾及两部分接口处的 $0$/$1$ 是否合法,所以要维护当前段的首尾是否为 $1$)

就做完啦,厚厚!三只 $log$ 三只 $log$ 跑得快跑得快 ~

$Code$